The approaches described in this section could be pursued, but are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Computer networks typically are comprised of multiple network elements, such as routers, that communicate data to each other. Working together or individually, network elements may provide various services. For example, several routers working together may provide a voice-over-IP service.
The quality of network elements or services may be measured according to various metrics. One metric used to measure the quality of network elements and services is the availability metric. At least in theory, a network element's availability with respect to a given time period should reflect the fraction of that time period that the network element was at least partially operational. To simplify the discussion herein, availability is discussed in the context of network elements. However, the following references to the availability of network elements apply equivalently any other kind of computing element, and to services.
The availability metric theoretically could be used for many different purposes. For example, if obtained accurately, the availability metric might be used to perform availability-based routing. Given multiple network routes between a specified source and a specified destination, availability-based routing would seek to determine and use the route that contains network elements having the highest aggregate availability. As another example, the availability metric might be used for load balancing. Given the availability of multiple network elements to participate in a task, load balancing would seek to distribute the task to network elements having the highest availability.
Conventional approaches for determining network element availability have significant drawbacks. Some approaches approximate the availability of types or classes of network elements generally and then apply those approximations to specific network elements. In real-time operation however, the actual availability of a specific network element can vary greatly from the availability approximated for the corresponding type or class of network element. Also, conventional approaches assume network elements are operating in isolation and do not take into consideration the status of interactions with other network elements or how those interactions may change over time. Thus, conventional approaches are not well suited for determining the network availability of groups of network elements or subnetworks. Given the limitations in conventional approaches, there is a need for an approach for estimating the real time availability of subnetworks that does not suffer from limitations of conventional approaches.